SWIG est un outil logiciel d'interfaçage pour lier des programmes en C/C++ avec des programmes de plus haut-niveau comme Python, PHP, JavaScript…"
Les paquets suivants doivent être présents pour pouvoir installer swig:
pcre-config qui vient avec le paquet libpcre3-dev:
apt install libpcre3-dev
g++ qui vient avec build-essential
apt install build-essential
Pour réaliser des interfaces vers python, il est souvent nécessaire d'ajouter:
apt install python3-dev
Télécharger le paquet swig sur http://www.swig.org/download.html 1)
Décompresser le fichier téléchargé:
tar xvfz swig-3.0.12
Lancer l'installation comme préciser sur le site de Swig:
./configure make
et enfin l'installation finale avec les droits d'administration
make install
De nombreux exemples existent dans le répertoire Examples, un fichier index.html y donne des indications utiles.
Il contient les variables et fonctions qui vont être dans l'interface et donc appelées par le(s) programme(s) de haut-niveau
/* exemple.i */
%module exemple
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern void set_My_variables(double x, int i);
extern double get_result(void);
extern int get_result_entier(void);
extern void place_mode(int i);
extern char *get_time();
%}
extern double My_variable;
extern void set_My_variables(double x, int i);
extern double get_result(void);
extern int get_result_entier(void);
extern void place_mode(int i);
extern char *get_time();
Exemple entre c++ et python:
swig -python -c++ mon_interface.i
Compilation avec les fichiers d'interfaçage, ici example.cxx :
g++ -c -std=c++14 src/*.cpp src/exemple.cxx -I./lib -I/usr/include/python3.4
Éditions de liens:
g++ -shared *.o -o _exemple.so
Dans notre exemple en python, il suffit de réaliser un import:
>>> import exemple